Technical Field
This application generally relates to techniques for use in connection with deadlock avoidance.
Description of Related Art
Computer systems may include different resources used by one or more host processors. Resources and host processors in a computer system may be interconnected by one or more communication connections. These resources may include, for example, data storage devices such as those included in the data storage systems manufactured by EMC Corporation. These data storage systems may be coupled to one or more host processors and provide storage services to each host processor. Multiple data storage systems from one or more different vendors may be connected and may provide common data storage for one or more host processors in a computer system.
A host processor may perform a variety of data processing tasks and operations using the data storage system. For example, a host processor may perform basic system I/O operations in connection with data requests, such as data read and write operations.
Host processor systems may store and retrieve data using a storage system containing a plurality of host interface units, disk drives, and disk interface units. Such storage systems are provided, for example, by EMC Corporation of Hopkinton, Mass. The host systems access the storage system through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage system and the storage system provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage system directly, but rather, access what appears to the host systems as a plurality of logical disk units, logical devices, or logical volumes (LVs). The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the storage system allows the host systems to share data stored therein.
In connection with a data storage system, or more generally any system, resources may be commonly shared and used among multiple entities such as, for example, processes, objects, tasks, threads, and the like. A deadlock may occur with two or more such entities. For example, consider the following simplified illustration with two entities. A first entity enters a waiting state because a first requested resource needed for the first entity to continue is currently being held by a second entity. Additionally, the second entity is also currently in a waiting state because a second requested resource needed for the second entity to continue is currently being held by the first entity. In such a situation, each of the first and second entities are waiting for the other to release a resource. In such a system where both the foregoing first and second entities may be unable to continue thereby remaining in a waiting state for a requested resource indefinitely, the system may be characterized as being in deadlock. In a system where deadlock can occur, it may be desirable to utilize techniques to avoid, detect, and/or prevent deadlock from occurring.